#pragma once

#include "Card.h"
#include <set>
#include <iterator>

namespace Cards {

	class CardSet
	{
		std::set<Card*> cards;

	public:
		CardSet(void);
		~CardSet(void);

		class Iterator: public std::iterator<std::input_iterator_tag, Card*>
		{
			friend class CardSet;
			std::set<Card*>::iterator iterator;
			Iterator(std::set<Card*>::iterator foo);
		public:
			Iterator& operator++();
			Iterator operator++(int);
			bool operator==(const Iterator& rhs);
			bool operator!=(const Iterator& rhs);
			Card* operator*();
		};

		void add(Card* card);
		Iterator begin();
		Iterator end();
		bool contains(Card*);
		bool empty();
		int size();
		bool operator==(const CardSet& rhs);
		CardSet intersect(CardSet&);
	};

}
